using System;
using System.Collections.Generic;
using System.Text;
using EntidadesTO;
using System.Data;
using System.Data.SqlClient;

namespace AccesoDatos
{
    public class DistritoDA
    {
        public List<DistritoTO> ListarDistrito(int pSecProvincia)
        {
            List<DistritoTO> listaDistrito = new List<DistritoTO>();
            SqlDataReader reader = null;
            SqlCommand comando;
            //ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();
            SqlConnection conexion_part = new SqlConnection("Data source=.\\SQLEXPRESS;Initial Catalog=RentasBD3;integrated security=true");
            conexion_part.Open();

            try
            {

                //instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_get_SEC_Distrito_filter", conexion_part);
                comando.Parameters.AddWithValue("@pSecProvincia", pSecProvincia);
                comando.CommandType = CommandType.StoredProcedure;

                reader = comando.ExecuteReader();
                while (reader.Read())
                {
                    DistritoTO distritoTO = new DistritoTO();
                    distritoTO.SecDistrito = reader.GetInt32(reader.GetOrdinal("secDistrito"));
                    distritoTO.DesDistrito = reader.GetString(reader.GetOrdinal("desDistrito"));
                    distritoTO.CodZonaPostal = reader.GetString(reader.GetOrdinal("codZonaPostal"));
                    distritoTO.SecProvincia = reader.GetInt32(reader.GetOrdinal("secProvincia"));

                    listaDistrito.Add(distritoTO);
                }

                reader.Close();
                conexion_part.Close();
                //instanciaConexion.CerrarConexion();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                listaDistrito = null;

            }
            finally
            {
                if (reader != null)
                {
                    if (reader.IsClosed == false)
                        reader.Close();
                }
                //if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                if (conexion_part.State != ConnectionState.Closed)
                {
                    //instanciaConexion.CerrarConexion();
                    conexion_part.Close();
                }
                conexion_part.Dispose();
            }

            return listaDistrito;

        }

        public DistritoTO BuscarUbigeoCompleto(int pSecDistrito)
        {
            DistritoTO distritoTO = new DistritoTO();
            SqlDataReader reader = null;
            SqlCommand comando;
            ConexionBD instanciaConexion = ConexionBD.ObtenerInstancia();

            try
            {

                instanciaConexion.AbrirConexion();
                comando = new SqlCommand("sp_get_SEC_Ubigeo_porDistrito", instanciaConexion.ObtenerConexion());
                comando.Parameters.AddWithValue("@pSecDistrito", pSecDistrito);
                comando.CommandType = CommandType.StoredProcedure;

                reader = comando.ExecuteReader();

                while (reader.Read())
                {
                    distritoTO.SecPais = reader.GetInt32(reader.GetOrdinal("secPais"));
                    distritoTO.SecDepartamento = reader.GetInt32(reader.GetOrdinal("secDepartamento"));
                    distritoTO.SecProvincia = reader.GetInt32(reader.GetOrdinal("secProvincia"));
                    distritoTO.SecDistrito = reader.GetInt32(reader.GetOrdinal("secDistrito"));

                }

                reader.Close();
                instanciaConexion.CerrarConexion();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                distritoTO = null;

            }
            finally
            {
                if (reader != null)
                {
                    if (reader.IsClosed == false)
                        reader.Close();
                }
                if (instanciaConexion.ObtenerConexion().State != ConnectionState.Closed)
                {
                    instanciaConexion.CerrarConexion();
                }
            }

            return distritoTO;

        }
    }
}
